package org.proxywars.engine.rts;

public interface ICommand {

	boolean canBeExecuted(IUnit subject);
	
	void cancel();
	boolean isCanceled();
	
	void process();
	
	/**
	 * Returns a value between 0 and 1
	 * 1 meaning, that this command has finished
	 * @return
	 */
	float getCompletion();

	/**
	 * Sets the owner of the command (the one that issued it)
	 * @param owner
	 */
	void setOwner(IParty owner);
}
